package com.wn.date20190806ATM;

import java.math.BigInteger;
import java.security.MessageDigest;

/**
 * 管理用户 public boolean register(User user) { //1,到Global.users去查找是否存在要注册的账号
 * //2，如果存在，直接返回false,并提示 // 如果不存在，直接加到Global.users的末尾
 * 
 * for(User u: Global.users) { if(u !=null) {
 * if(user.getAccount().equals(u.getAccount())) { return false; } } } return
 * true; }
 * 
 * public boolean login(String account,String password) {
 * //1，到Global.users去查找是否存在要注册的账号 // 2,如果存在，再去判断密码是否匹配 // 如果不存在，直接返回false,提示
 * //3,修改用户的状态，返回true return true; }
 * 
 * @author song
 *
 */
public class UserManager
{
	/**
	 * 注册 //1,到Global.users去查找是否存在要注册的账号 //2，如果存在，直接返回false,并提示 //
	 * 如果不存在，直接加到Global.users的末尾
	 * 
	 * @param user
	 * @return
	 */
	public boolean register(User user)
	{
		if (user == null)
		{
			System.out.println("参数错误");
			return false;
		} else
		{
			User matchUser = Gloabl.matchUser(user.getAccount());
			if (matchUser != null)
			{
				System.out.println("用户已存在！ ");
				return false;
			}
			// 加密用户密码
			user.setPassword(getMD5Str(user.getPassword()));
			// 注册,添加到gloabl
			Gloabl.add(user);
			return true;
		}

	}

	/**
	 * 登陆
	 * 
	 * @param account
	 * @param password
	 * @return
	 */
	public boolean login(String account, String password)
	{
		// 查找
		User user = Gloabl.matchUser(account);
		if (user != null)
		{

		}
		if (user != null)
		{
			// 加密后比较
			if (user.getPassword().equals(getMD5Str(password)))
			{
				// 设为登陆
				user.setLogined(true);
				return true;
			} else
			{
				System.out.println("用户名密码不匹配");
				return false;
			}
		}
		// 未匹配到
		System.out.println("用户不存在");
		return false;
	}

	/**
	 * md5加密字符串
	 * 
	 * @param str
	 * @return
	 */
	public static String getMD5Str(String str)
	{
		try
		{
			// 生成一个MD5加密计算摘要
			MessageDigest md = MessageDigest.getInstance("MD5");
			// 计算md5函数
			md.update(str.getBytes());
			// digest()最后确定返回md5 hash值，返回值为8为字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
			// BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
			return new BigInteger(1, md.digest()).toString(16);
		} catch (Exception e)
		{
			System.out.println("MD5加密出现错误，" + e.toString());
			return "";
		}

	}
}
